﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    // http://southworks.com/blog/2012/02/01/how-to-build-a-basic-fluent-interface-in-8-steps/
    public interface IAuthorSpecAfterCreation
    {
        IAuthorSpecAfterName Name(string name);
    }

    public interface IAuthorSpecAfterName
    {
        IAuthorSpecAfterEmail Email(string email);
        IAuthorSpecAfterTwitter Twitter(string twitter);
    }

    public interface IAuthorSpecAfterEmail
    {
        IAuthorSpecAfterEmailOrTwitter Twitter(string twitter);
    }

    public interface IAuthorSpecAfterTwitter
    {
        IAuthorSpecAfterEmailOrTwitter Email(string email);
    }

    public interface IAuthorSpecAfterEmailOrTwitter
    {
    }

    //public class AuthorSpec : IAuthorSpecAfterCreation, IAuthorSpecAfterName, IAuthorSpecAfterEmail, IAuthorSpecAfterTwitter, IAuthorSpecAfterEmailOrTwitter
    //{
    //    //public string NameValue { get; set; }
    //    //public string EmailValue { get; set; }
    //    //public string TwitterValue { get; set; }

    //    public IAuthorSpecAfterName Name(string name)
    //    {
    //        //this.NameValue = name;
    //        return this;
    //    }

    //    //public IAuthorSpecAfterEmail Email(string email)
    //    //{
    //    //    //this.EmailValue = email;
    //    //    return this;
    //    //}

    //    //public IAuthorSpecAfterTwitter Twitter(string twitter)
    //    //{
    //    //    //this.TwitterValue = twitter;
    //    //    return this;
    //    //}
    //}
}
